1. Field of the Invention
The present invention relates generally to a system and method for the fundamental input/output (I/O) service of an operating system. More particularly, it relates to such a system and method which exploits the capabilities provided by a multi-threaded executive. Most especially, the invention relates to such a system and method which provides for the natural expression of compound services, in which cascades of secondary requests are required to accomplish a given task.
2. Description of the Prior Art
The I/O service of an operating system is traditionally organized in layers. A superior layer implements a formal I/O model of the operating system. The subordinate layer, called a device handler, or "driver", provides the means of transferring information to and from a device.
This model works well in environments where only applications can make I/O service requests, but fails to accommodate gracefully other situations. For example, a device handler which must itself issue I/O requests to accomplish its task cannot directly do so. Instead, it is obliged to use elaborate back-door mechanisms to circumvent portions of the I/O service, or to elevate the request above the system service boundary to the level of a process, which is normally the only entity that may legitimately issue such requests.
This situation often arises whenever I/O requests target non-physical "devices". Non-physical "device" handlers are required to provide the illusion of a device, but actually implement a purely software function. It is often very difficult to structure software in this manner, since it becomes distorted in ways that have little to do with the actual function. This results in unnaturally complex, often inefficient, and highly bug-prone software.
For example, a network is implemented in layers of functionality, only the very lowest of which deals with a physical device. The intermediate layers perform complex tasks, and often issue I/O service requests as they execute. Nevertheless, the highest layer of the network is itself expected to conform to the requirements of the system I/O service, creating a problem with regard to the use of I/O (and often other) services of the operating system by lower network layers. This situation is not unique to network software. It also occurs in software implementing:
disk shadowing, in which a request is replicated across many devices; PA1 disk striping, in which a request is divided among many devices; PA1 file systems, in which complex meta-data describing files must be maintained on the file device; PA1 distributed system services, in which the activities of several cooperating systems must be coordinated by the use of communications services.
Also known in the prior art are non-hierarchial I/O mechanisms in which a dual mode microprocessor can act either as a front-end I/O controller processor relative to a primary host processor and device or as a secondary data processor having independent storage, processing and I/O capabilities. It is further known to use a flexible mechanism in which an information exchange processor handles data transfers between multiple central processor handles data transfer between multiple processing units (CPUs) and multiple devices, including device to device transfers. Despite the existence of such prior art, there is a need for further development of a system and process for I/O services, especially for use in network software and in similar environments.